package com.ns.sbs.oauth.menu.entry;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ns.core.entry.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;

/**
 * 服务菜单
 *
 * @author: lw
 * @since: 2024/09/13 12:55
 */
@EqualsAndHashCode(callSuper = true)
@Data
@ToString
@Accessors(chain = true)
@TableName(value = "KERNEL_MENU")
public class MenuEntry extends BaseModel {
    /**
     * 此模块对应的表名
     */
    public static final String TABLE_NAME = "KERNEL_MENU";
    /**
     * 唯一标识
     */
    @TableId(type = IdType.INPUT)
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;
    /**
     * 菜单栏
     */
    private String name;
    /**
     * 图标
     */
    private String icon;
    /**
     * 菜单名
     */
    private String code;
    /**
     * 地址
     */
    private String path;

    /**
     * 组件
     */
    private String component;

    /**
     * 菜单等级
     */
    private Integer level;
    /**
     * 是否固定
     */
    private Integer affix;

    /**
     * 是否隐藏
     */
    private Integer hidden;

    /**
     * 需要授权
     */
    private Integer isAuth;

    /**
     * 子菜单唯一时，根菜单显示标识
     */
    private Integer alwaysShow;

    /**
     * 公用表示 0 非 1 是
     */
    private Integer commonFlag;

    /**
     * 父级菜单
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long pid;
}
